heparansulfate Java
packageThis project provides a Java implementation for estimating properties of complex biochemical mixtures that consist of linear chains made of a small set of building blocs. This package originated with a publication on the characterization of Heparan Sulfate (HS).
“Combining measurements to estimate properties and characterization extent of complex biochemical mixtures; applications to Heparan Sulfate”. J.R. Pradines, D. Beccati, M. Lech, J. Ozug, V. Farutin, Y. Huang, N.S. Gunay & I. Capila. Scientific Reports volume 6, Article number: 24829 (2016) [full text].
Bovine Kidney Heparan sulfate consists of oriented linear chains, from non-reducing to reducing end, that are made of at least 13 building blocs. In the above referenced publication, building blocks are divided in two categories depending on their sulfation status: sulfated (S) and unsulfated (U).
Two questions are answered in the paper:
Therefore, there are four possible ways to model the mixture of chains.
| Model | Name | Main Class |
|---|---|---|
| H&I | Homogeneity & Independence | HIModel |
| H&C | Homogeneity & Correlation | HCModel |
| N&I | Non-homogeneity & Independence | NIModel |
| N&C | Nonhomogeneity & Correlation | MaxEntModel |
It is shown that the first 3 models cannot reproduce experimental data on the mixture, therefore maximum-entropy modeling (least-assumption modeling) is used to estimate Nonhomogeneity and Correlation.
Models are tested for their fit to experimental constraints with a few different optimization techniques.
Mathematical work that yields expression of constraints and formulation of the optimization problem is contained in the publication supplementary material. This work relies on probability calculus to obtain expressions of constraints. Below are links to pages of the supplementary material for each model.
The following table lists Java classes, their corresponding model, their main role, links to their javadoc and links to their page in the supplementary material. Note that the table is interactive: rows can be sorted by column values and the search box acts as a filter.
While the package is designed with Java, using it via R is possible
with package rJava. Below is an example.
library(rJava)
# print(getwd())
jar_path <- normalizePath("../target/heparan-sulfate-1.0-SNAPSHOT-jar-with-dependencies.jar", mustWork = TRUE)
.jinit(classpath = jar_path)
input_dir <- paste0(normalizePath("../input/", mustWork = TRUE), "/")
summary_text <- .jcall("heparansulfate.CSpec", "Ljava/lang/String;", "getHeparanSulfateSpecSummary", input_dir)
cat(summary_text)
## Heparinase I Specificities:
## 1.0
## 0.03
##
## Heparinase III Specificities:
## 0.033
## 1.0
For further examples see the following document which shows how to derive the figures of the publication.